package com.zmn.oms.dubbo.interfaces.zmn.factory.order;

import com.zmn.common.dto.ResponseDTO;
import com.zmn.oms.dubbo.dto.zmn.order.*;
import com.zmn.oms.dubbo.dto.zmn.order.factory.*;
import com.zmn.oms.dubbo.dto.zmn.order.NewOrderDRO;
import com.zmn.oms.dubbo.dto.zmn.order.OrderDRO;
import com.zmn.oms.dubbo.dto.zmn.order.OrderDetailDRO;
import com.zmn.oms.dubbo.dto.zmn.order.factory.CheckReworkOrderDIO;
import com.zmn.oms.dubbo.dto.zmn.order.factory.UpdateOrderDIO;
import com.zmn.oms.dubbo.dto.zmn.order.factory.detail.FcOrderDetailDRO;

/**
 * 类描述：厂商订单
 *
 * @author liuying
 * @date 2018/11/07 15:09
 */
public interface FactoryOrderRemoteService {

    /**
     * 获取工单详情
     *
     * @param orderId
     * @return
     */
    ResponseDTO<OrderDetailDRO> findOrderDetail(Long orderId);

    /**
     *
     * @param orderId
     * @return
     */
    ResponseDTO<OrderWorkDRO> findOrderWorkByKey(Long orderId,Long workId);

    /**
     * 获取订单信息
     *
     * @param orderId
     * @return
     */
    ResponseDTO<OrderDRO> getOrderById(Long orderId);

    /**
     * 新增订单
     *
     * @param updateOrderDIO 新单信息
     * @return 修改结果
     */
    ResponseDTO updateOrder(UpdateOrderDIO updateOrderDIO);

    /**
     * 新增订单
     *
     * @param fcNewOrderDIO 新单信息
     * @return 修改结果
     */
    ResponseDTO<NewOrderDRO> addOrder(FcNewOrderDIO fcNewOrderDIO);

    /**
     * 查询厂商单详情
     *
     * @param orderId
     * @param workId
     * @return
     */
    ResponseDTO<FcOrderDetailDRO> findFcOrdeWorkDetail(Long orderId, Long workId);

    /**
     * 厂商订单列表
     * @param queryDIO
     * @return
     */
    ResponseDTO<OrderListPageDRO> listPageOrderWorkByQuery(OrderQueryDIO queryDIO);

    /**
     * 取消订单
     * @param cancelOrderDIO
     * @return
     */
    ResponseDTO cancelOrder(CancelOrderDIO cancelOrderDIO);

    /**
     * 保存备注
     * @param fcRemarkDIO
     * @return
     */
    ResponseDTO saveRemark(FcRemarkDIO fcRemarkDIO);

    /**
     * 获取默认预约时间
     *
     * @return
     */
    ResponseDTO getDefaultDutyTime();

    /**
     * 后台获取预约排期
     *
     * @return
     */
    ResponseDTO<OrderScheduleDayDRO> getScheduleDayList();

    /**
     * 后台获取预约排期
     *
     * @return
     */
    ResponseDTO<OrderScheduleTimeDRO> getScheduleTimes(String scheDate);

    /**
     * 后台获取预约排期--含平台类型
     *
     * @return
     */
    ResponseDTO<OrderScheduleTimeDRO> getScheduleTimes(GateScheduleDIO gateScheduleDIO);

    /**
     * 返修单检查
     * @param checkReworkOrderDIO
     * @return
     */
    ResponseDTO checkRework(CheckReworkOrderDIO checkReworkOrderDIO);

    /**
     * 获取修改工单对象
     * @param orderId
     * @return
     */
    ResponseDTO<UpdateOrderDRO> findOrderUpdateDetail(Long orderId);

    /**
     * 厂商ID->渠道ID
     */
    ResponseDTO<Integer> getChannelIdByFactoryId(Integer factoryId);
    /**
     * 校验15天内是否有重复工单 15天内用户电话、用户地址、服务分类、服务产品完全一致的
     */
    ResponseDTO<Boolean> checkDuplicate(FcNewOrderDIO fcNewOrderDIO);
}